package com.example.wenhua.service;

import com.example.wenhua.dto.AiQueryResponse;

import java.util.List;
import java.util.Map;

/**
 * 查询执行服务接口
 */
public interface QueryExecutorService {
    
    /**
     * 执行SQL查询
     * 
     * @param sql SQL语句
     * @return 查询结果
     */
    List<Map<String, Object>> executeQuery(String sql);
    
    /**
     * 执行SQL查询并返回完整响应
     * 
     * @param sql SQL语句
     * @param originalQuery 原始查询
     * @param needExplanation 是否需要解释
     * @return 完整的查询响应
     */
    AiQueryResponse executeQueryWithResponse(String sql, String originalQuery, boolean needExplanation);
    
    /**
     * 获取查询结果的列信息
     * 
     * @param sql SQL语句
     * @return 列信息列表
     */
    List<AiQueryResponse.ColumnInfo> getColumnInfo(String sql);
    
    /**
     * 生成查询解释
     * 
     * @param sql SQL语句
     * @param originalQuery 原始查询
     * @param resultCount 结果数量
     * @return 查询解释
     */
    String generateQueryExplanation(String sql, String originalQuery, int resultCount);
}